import { IPSApplicationObject } from './ipsapplication-object';
import { IPSAppMenuModel } from './appmenu/ipsapp-menu-model';
import { IPSAppDEUIActionGroup } from './dataentity/ipsapp-deuiaction-group';
import { IPSAppView } from './view/ipsapp-view';
import { IPSControl } from '../control/ipscontrol';

/**
 *
 * @export
 * @interface IPSSubAppRef
 */
export interface IPSSubAppRef extends IPSApplicationObject {
  /**
   *  应用实体界面行为组集合
   *
   * @type {IPSAppDEUIActionGroup[]}
   */
  getAllPSAppDEUIActionGroups(): IPSAppDEUIActionGroup[] | null;

  /**
   *  应用实体界面行为组集合
   *
   * @type {IPSAppDEUIActionGroup[]}
   */
  get allPSAppDEUIActionGroups(): IPSAppDEUIActionGroup[] | null;

  findPSAppDEUIActionGroup(objKey: any): IPSAppDEUIActionGroup | null;

  /**
   * 应用视图集合
   *
   * @type {IPSAppView[]}
   */
  getAllPSAppViews(): IPSAppView[] | null;

  /**
   * 应用视图集合
   *
   * @type {IPSAppView[]}
   */
  get allPSAppViews(): IPSAppView[] | null;

  findPSAppView(objKey: any): IPSAppView | null;

  /**
   *  应用实体关系部件集合
   *
   * @type {IPSControl[]}
   */
  getAllPSDEDRControls(): IPSControl[] | null;

  /**
   *  应用实体关系部件集合
   *
   * @type {IPSControl[]}
   */
  get allPSDEDRControls(): IPSControl[] | null;

  findPSControl(objKey: any): IPSControl | null;

  /**
   * 模型戳
   * @type {string}
   */
  modelStamp: string;

  /**
   * 应用菜单模型
   *
   * @type {IPSAppMenuModel}
   */
  getPSAppMenuModel(): IPSAppMenuModel | null;

  /**
   * 应用菜单模型
   *
   * @type {IPSAppMenuModel}
   */
  get psAppMenuModel(): IPSAppMenuModel | null;

  /**
   * 应用菜单模型（必须存在）
   *
   * @type {IPSAppMenuModel}
   */
  getPSAppMenuModelMust(): IPSAppMenuModel;
}
